const express = require("express");
const fs = require("fs");
const path = require("path");
// 引入multer模块
const multer = require("multer");

const port = 3000;
const fileTarget = "/uploads";

const app = express();

app.use(express.static("./www"));

// 创建multer实例
const upload = multer({ dest: './www'+fileTarget })

// 注册multer：接收任意文件
app.use(upload.any());

// 定义接口
app.post('/uploadFile', function (req, res, next) {
    // multer模块接收到的文件对象（数组）
    // console.log(req.files);
	// 准备返回前端数据
    let resData = {code:1,msg:[]};
    // 遍历文件对象数组
    req.files.forEach(val=>{
    	// 将上传的文件名称信息解析成对象（原文件名）
        const fileObj = path.parse(val.originalname);
        // 配合原文件信息对象，将multer随机生成的文件名拼接在前
        // 既保证每次上传文件出现同名问题，又标记了原文件名称和扩展名
        const newFile = val.path + "-" + fileObj.base;
		// 使用fs模块将multer生成的文件名修改成 新文件名
        fs.renameSync(val.path, newFile);
		// ["http://localhost:3000/uploads/2346819e7fc4497125031febbfb066c3-avatar.jpg"]
		resData.msg.push(`${req.protocol}://${req.hostname}:${port}${fileTarget}/${val.filename}-${fileObj.base}`);
    })
    // {"code":1,"msg":["http://localhost:3000/uploads/2346819e7fc4497125031febbfb066c3-avatar.jpg"]}
    res.send(resData);
})

app.listen(3000,()=>console.log("http://localhost:3000 Server OK"));